/**
 *@Title: FileChannelDemo.java
 *@Description: TODO
 *@author:Lau
 *@date 2017年7月9日 下午6:19:06 
 *@version V1.0
 */
package com.lty.nio.channeltest;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/** 
* @ClassName: FileChannelDemo 
* @Description: 文件通道操作
* @author Lau 
* @date 2017年7月9日 下午6:19:06 
*  
*/
@SuppressWarnings(value = { "all" })
public class FileChannelDemo {
	public static void main(String[] args) throws Exception {
		//定义缓冲区对象
		ByteBuffer buff = ByteBuffer.allocate(1024);
		
		//通过文件输入流获取文件通道对象（读取操作）
		FileChannel  inFc = new FileInputStream("c://test/test.txt").getChannel();
		
		//追加写文件
		FileChannel outFc = new FileOutputStream("c://test/test.txt",true).getChannel();
	
		//读取数据
		buff.clear();
		
		//这里的buff和ByteBuffer相比，不够可自动扩展
		int len = inFc.read(buff);
		System.out.println(new String(buff.array(), 0, len));
		
		//写数据（缓冲区视图操作）
		ByteBuffer buff2 = ByteBuffer.wrap("hello".getBytes());
		outFc.write(buff2);
		
		//关闭资源
		outFc.close();
		inFc.close();
	}
}
